﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
using Entidades;

namespace Acceso_a_Datos
{
    public class PalabraDatos
    {
        public List<PalabraEntidades> Obtener(int idGrilla)
        {
            ConexionBD conexion = new ConexionBD();
            
            string consulta = "SELECT numeroPalabra, Palabra, Referencia FROM Palabras WHERE IdGrilla = @idGrilla";

            SqlParameter[] parametros = new SqlParameter[1];
            parametros[0] = new SqlParameter();
            parametros[0].ParameterName = "idGrilla";
            parametros[0].Value = idGrilla;
            parametros[0].SqlDbType = SqlDbType.Int;

            DataTable tablaDatos = conexion.SelectQuery(consulta, parametros);
            
            List<PalabraEntidades> palabras = new List<PalabraEntidades>();
            
            foreach (DataRow fila in tablaDatos.Rows)
            {
                PalabraEntidades palabra = new PalabraEntidades();
                palabra.IdGrilla = idGrilla;
                palabra.NumeroPalabra = fila.Field<int>("numeroPalabra");
                palabra.Palabra = fila.Field<string>("Palabra");
                palabra.Referencia = fila.Field<string>("Referencia");

                palabras.Add(palabra);
            }

            return palabras;
        }

        public void Insertar(PalabraEntidades palabra)
        {
            string consulta = "INSERT INTO Palabras VALUES"
                + " (@idGrilla, @numeroPalabra, @palabra, @descripcion)";

            SqlParameter[] parametros = new SqlParameter[4];
            parametros[0] = new SqlParameter("idGrilla", palabra.IdGrilla);
            parametros[1] = new SqlParameter("numeroPalabra", palabra.NumeroPalabra);
            parametros[2] = new SqlParameter("palabra", palabra.Palabra);
            parametros[3] = new SqlParameter("descripcion", palabra.Referencia);

            ConexionBD conexion = new ConexionBD();
            conexion.ExecuteNonQuery(consulta, parametros);
        }

        public void Actualizar(PalabraEntidades palabra)
        {
            string consulta = "UPDATE Palabras"
                + " SET IdGrilla = @idGrilla, NumeroPalabra = @numeroPalabra, Palabra = @palabra, Referencia = @referencia"
                + " WHERE IdGrilla = @idGrilla AND NumeroPalabra = @numeroPalabra";

            SqlParameter[] parametros = new SqlParameter[4];
            parametros[0] = new SqlParameter("idGrilla", palabra.IdGrilla);
            parametros[1] = new SqlParameter("numeroPalabra", palabra.NumeroPalabra);
            parametros[2] = new SqlParameter("palabra", palabra.Palabra);
            parametros[3] = new SqlParameter("descripcion", palabra.Referencia);

            ConexionBD conexion = new ConexionBD();
            conexion.ExecuteNonQuery(consulta, parametros);
        }
    }
}
